Мандатное управление доступом (МРД)

Мандатное управление доступом представляет собой подход к управлению безопасностью в информационных системах, при котором система сама определяет и принимает решения о предоставлении или ограничении доступа к ресурсам в зависимости от заданных правил безопасности.

В подразделе выполняется поддержка МРД, настройка классификаторов уровней и категорий конфиденциальности и настройка их для пользователя.

Поддержка МРД включает в себя применение политик безопасности, ведение журналов аудита и контроль за перемещением информации между уровнями доступа. Настройка уровней и категорий для пользователя дает возможность точно определить, к каким ресурсам системы пользователь имеет право получить доступ, что минимизирует риски несанкционированного доступа к защищаемой информации.

Внимание

Параметры пользователей групповых политик ALD Pro применимы только при авторизации под нулевым уровнем конфиденциальности без выбора категорий конфиденциальности, так как при включенном МРД происходит смена алгоритма определения домашней директории пользователя.

Модель мандатного управления доступом

Модель МРД основана на правилах WURD (write up, read down) — субъекты могут записывать только в объекты с уровнем конфиденциальности равным или выше своего, а читать только из объектов с уровнем равным или ниже своего. В Astra Linux используется МРОСЛ ДП-модель, которая объединяет мандатное управление доступом (МРД), мандатный контроль целостности (МКЦ) и дискреционное управление доступом.

Уровни конфиденциальности

Классификаторы уровней определяют иерархическую структуру допуска к информации по степени секретности. Уровни конфиденциальности представляют целые числа от 0 до 255 с текстовыми наименованиями. По умолчанию создается четыре уровня (0-3), где 0 означает отсутствие конфиденциальности. Администратор может добавлять новые уровни, при этом рекомендуется использовать значения 10, 20, 30 вместо 1, 2, 3 для возможности вставки промежуточных уровней. Для работы с уровнями выше 3 необходимо изменить параметр sysmaclev в /usr/sbin/pdp-init-fs и перезагрузить систему.

Категории конфиденциальности

Категории конфиденциальности — неиерархические метки от 0 до 63 с текстовыми наименованиями, позволяющие разделять доступ к информации по функциональным областям и рабочим группам. В метках безопасности набор категорий задается 64-битным числом в шестнадцатеричном формате, где каждый бит соответствует отдельной категории. Пользователь с несколькими категориями может читать файлы с любой из них, но записывать только в файлы со всеми своими категориями одновременно.

Делегирование прав обычному пользователю

Чтобы назначить пользователя администратором мандатного разграничения доступа (МРД), необходимо назначить ему следующие привилегии:

  • PARSEC_CAP_CHMAC — дает право изменять метки безопасности;

  • PARSEC_CAP_IGNMACLVL — для обхода контроля уровней конфиденциальности (рекомендуется);

  • PARSEC_CAP_IGNMACCAT — для обхода контроля категорий конфиденциальности (рекомендуется).

Ограничения делегированных прав

Пользователь может потерять доступ к объекту, если назначит ему метку безопасности выше своей. Утилиты администрирования доступны по абсолютному пути /sbin/pdpl-file. Полное администрирование мандатного контроля целостности (МКЦ) доступно только пользователю root с максимальным уровнем целостности max_ilev (63).

Управление метками безопасности

Для назначения меток используется утилита pdpl-file с синтаксисом:

pdpl-file [Уровень_МРД]:[Уровень_МКЦ:[Категории_МРД:[Флаги]]] Имя_объекта

где:

  • Уровень МРД — уровень конфиденциальности, который задается как именем (например, «Совершенно_секретно»), так и числом в обычной десятичной системе счисления (например, «2»). Если значение будет не задано, то по умолчанию назначается нулевой уровень МРД.

  • Уровень МКЦ — уровень целостности, который задается как именем (например, «Высокий»), так и числом в обычной десятичной системе счисления (например, «63»). Если значение будет не задано, то по умолчанию назначается нулевой уровень МКЦ.

  • Категории МРД — список категорий конфиденциальности, которые можно перечислить как по именам через запятую (например, «Мотострелковые_войска,Танковые_войска»), так и задать одним числом в шестнадцатеричной системе счисления (например, 0x3).

Если значение не задано, то по умолчанию метка безопасности будет без категорий конфиденциальности. Если нужно задать сразу все доступные категории (значение sysmaxcat), то можно использовать специальное значение «-1». Процессы наследуют метки от родительских процессов, изменить метку может только администратор через утилиту pdp-exec.

Контейнеры объектов

По умолчанию действует политика CCR — в каталоге могут находиться только объекты с меткой, полностью совпадающей с меткой каталога. Новые объекты наследуют метку родительского каталога. Политику можно инвертировать атрибутом CCNR.

Мандатные атрибуты

Основные атрибуты для изменения политики МРД:

  • CCNR — позволяет хранить в каталогах объекты с различными метками конфиденциальности не выше метки каталога. Новые объекты получают нулевую метку. Каталоги с CCNR недоступны на запись обычным пользователям во избежание скрытых каналов связи.

  • EHOLE — делает низкоцелостные файлы с нулевой меткой доступными на запись для процессов с любой меткой. Технически применим к любым файлам, но административно разрешен только для устройств и сокетов (например, /dev/null) во избежание рассекречивания информации.

WHOLE — делает файлы с максимальной меткой доступными на запись для процессов с любой меткой. Используется для файлов журналов, в которые пишут приложения разных уровней конфиденциальности.

Чтобы получить полный список файлов, на которые установлен атрибут ehole или whole, необходимо воспользоваться следующей командой:

find / -exec pdp-ls -MXda {} \; 2> /dev/null | grep ':ehole'